using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using Leo.Entities;

namespace Leo.Repository.Mapping
{
    public class PRODUCTOMap : EntityTypeConfiguration<PRODUCTO>
    {
        public PRODUCTOMap()
        {
            // Primary Key
            this.HasKey(t => t.id_producto);

            // Properties
            this.Property(t => t.nombre_generico)
                .HasMaxLength(50);

            this.Property(t => t.nombre_comercial)
                .HasMaxLength(50);

            this.Property(t => t.descripcion)
                .HasMaxLength(150);

            this.Property(t => t.Ubicacion)
                .HasMaxLength(50);

            this.Property(t => t.comentario)
                .HasMaxLength(150);

            // Table & Column Mappings
            this.ToTable("PRODUCTO");
            this.Property(t => t.id_producto).HasColumnName("id_producto");
            this.Property(t => t.nombre_generico).HasColumnName("nombre_generico");
            this.Property(t => t.nombre_comercial).HasColumnName("nombre_comercial");
            this.Property(t => t.descripcion).HasColumnName("descripcion");
            this.Property(t => t.Precio_venta).HasColumnName("Precio_venta");
            this.Property(t => t.Precio_compra).HasColumnName("Precio_compra");
            this.Property(t => t.Ubicacion).HasColumnName("Ubicacion");
            this.Property(t => t.fecha_caducidad).HasColumnName("fecha_caducidad");
            this.Property(t => t.comentario).HasColumnName("comentario");
            this.Property(t => t.id_laboratorio).HasColumnName("id_laboratorio");
            this.Property(t => t.id_proveedor).HasColumnName("id_proveedor");

            // Relationships
            this.HasOptional(t => t.Laboratorio)
                .WithMany(t => t.PRODUCTOes)
                .HasForeignKey(d => d.id_laboratorio);
            this.HasOptional(t => t.Proveedor)
                .WithMany(t => t.PRODUCTOes)
                .HasForeignKey(d => d.id_proveedor);

        }
    }
}
